package org.csu.mypetstore.persistence;

import org.apache.ibatis.annotations.Param;
import org.csu.mypetstore.domain.Account;
import org.csu.mypetstore.domain.Cart;
import org.csu.mypetstore.domain.CartItem;
import org.csu.mypetstore.domain.ShoppingCart;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface CartMapper {

    //    List<Item> cartItemsByUsername(Account account);
    List<Cart> getCartItemsByUsername(Account account);
    void updateCartItemQty(String username,String qty,String id);
    void addCartItem(String username,String id);
    void submitItem(Account account);
    void updateInventory(List<Cart>carts);

    /**
     * 根据用户id获取购物车
     * @param userid
     * @return
     */
    List<CartItem> getCartItemList(String userid);

    /**
     * 向购物车插入商品
     * @param itemId
     * @param userid
     * @param quantity
     */
    void insertCartItem(@Param("itemId")String itemId, @Param("userid")String userid, @Param("quantity")int quantity);

    /**
     * 更新购物车数据
     * @param itemId
     * @param userid
     * @param quantity
     */
    void updateCartItem(@Param("itemId")String itemId, @Param("userid")String userid, @Param("quantity")int quantity);

    /**
     * 从购物车移除商品
     * @param itemId
     * @param userid
     */
    void removeCartItem(@Param("itemId")String itemId,@Param("userid")String userid);
    void deleteCart(@Param("username") String username,@Param("itemId") String itemId);
    void store(ShoppingCart shoppingCart);
    void beforeStore(String username);
    List<ShoppingCart> getCart(String username);
    int isInStock(String itemId);
}